home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Sample Code / SCSI Samples 1.0 / SCSI DriveID Sample 06⁄07 ƒ / Src / ShowSystemVolumeID.c < prev   
Encoding:
C/C++ Source or Header  |  1994-06-16  |  1.4 KB  |  69 lines  |  [TEXT/KAHL]

  1. /*                                ShowSystemVolumeName.c                            */
  2. /*
  3.  * ShowSystemVolumeName.c
  4.  * Copyright © 1992-94 Apple Computer Inc. All Rights Reserved.
  5.  */
  6. #include <Folders.h>
  7. #include <GestaltEqu.h>
  8. #include <Files.h>
  9. #include <Devices.h>
  10. #include <Memory.h>
  11. #include <Traps.h>
  12. #include <stdio.h>
  13. void                    ShowSystemVolumeName(void);
  14. void                    ShowSCSIDeviceIdent(
  15.         short                driverRefNum
  16.     );
  17.  
  18. static void
  19. ClearMemory(
  20.         Ptr                ptr,
  21.         Size            size
  22.     )
  23. {
  24.         while (size > 0) {
  25.             *ptr++ = 0;
  26.             --size;
  27.         }
  28. }
  29.  
  30.  
  31. void
  32. ShowSystemVolumeName(void)
  33. {
  34.         OSErr                    status;
  35.         long                    gestaltResult;
  36.         short                    systemVRefNum;
  37.         long                    systemFolderDirID;
  38.         HVolumeParam            pb;
  39.         Str255                    systemVolumeName;
  40.                 
  41.         status = Gestalt(gestaltFindFolderAttr, &gestaltResult);
  42.         if (status == noErr) {                /* We have FindFolder                */
  43.             status = FindFolder(
  44.                         kOnSystemDisk,
  45.                         kSystemFolderType,
  46.                         kDontCreateFolder,
  47.                         &systemVRefNum,
  48.                         &systemFolderDirID
  49.                     );
  50.         }
  51.         if (status == noErr) {
  52.             ClearMemory((Ptr) &pb, sizeof pb);
  53.             pb.ioVolIndex = 0;
  54.             pb.ioNamePtr = systemVolumeName;
  55.             pb.ioVRefNum = systemVRefNum;
  56.             status = PBHGetVInfoSync((HParmBlkPtr) &pb);
  57.         }
  58.         if (status == noErr) {
  59.             printf("Boot volume \"%.*s\", drive %d, driver %d",
  60.                 systemVolumeName[0],
  61.                 &systemVolumeName[1],
  62.                 pb.ioVDrvInfo,
  63.                 pb.ioVDRefNum
  64.             );
  65.             ShowSCSIDeviceIdent(pb.ioVDRefNum);
  66.             printf("\n");
  67.         }
  68. }
  69.